package com.github.common.extend.demo.config.json.jaskson.sensitive;

import java.util.function.Function;

/**
 * @author X1993
 * @date 2022/08/12
 * @description
 */
public enum SensitiveType {

    /**
     * 银行卡
     */
    BANK_CARD(SensitiveInfoUtils::bankCard),
    /**
     * 身份证号军官证号、护照号
     */
    ID_CARD(SensitiveInfoUtils::idCardNum),
    /**
     * 姓名(包括中文名称和英文名称的处理)
     */
    NAME(SensitiveInfoUtils::name),
    /**
     * 姓名(包括中文名称和英文名称的处理)
     */
    NICK_NAME(SensitiveInfoUtils::nickName),
    /**
     * 座机号
     */
    FIXED_PHONE(SensitiveInfoUtils::fixedPhone),
    /**
     * 手机号
     */
    MOBILE_PHONE(SensitiveInfoUtils::mobilePhone),
    /**
     * 地址
     */
    ADDRESS(x -> SensitiveInfoUtils.address(x ,6)),
    /**
     * 电子邮件
     */
    EMAIL(SensitiveInfoUtils::email),
    /***
     * 默认规则
     */
    DEFAULT(SensitiveInfoUtils::defaultDesensitization),
    ;

    /**
     * 加密函数
     */
    private final Function<String ,String> sensitiveFunction;

    SensitiveType(Function<String, String> sensitiveFunction) {
        this.sensitiveFunction = sensitiveFunction;
    }

    public String sensitive(String text){
        return sensitiveFunction.apply(text);
    }

}
